import java.util.Scanner;

public class Main {

    //递归解决汉诺塔问题

    // N 代表要移动的盘子数
    // M 代表最少移动步数的第几步

    //运用递归解决
    //递归的底层思想：将问题转化为子问题解决
    //首先找到递归的终止条件，及最小问题

    //汉诺塔问题，首先将最下方圆盘和它上方其余的 n - 1 个圆盘打包看做两部分
    //再依次递归，找到最小圆盘

    //有 n 个盘子：
    // 1 . f(n - 1) A -> B
    // 2 . n        A-> C
    // 3 .          B -> C

    // 1 . 将子问题的盘全部从 A -> B : A C B
    // 2 . 将最大盘从 A -> C : A B C (cnt + 1)
    // 3 . 将子问题全部从 B -> C : B A C

    //终止条件：n == 1
    //创建 cnt 用于储存 m 步
    //移动中找到了第 m 步
    //System.out.println("#" + m + ":" + A + "->" + C );


//    private static int cnt = 0;
//    private static int m ;
//    public static void hanoit(String A,String B,String C,int n){
//        //先执行递归终止条件
//        //只有一个：A -> C
//        if(n == 1){
//            cnt++;
//            if(cnt == m){ //此时找到了第 m 步
//                System.out.println("#" + n + ": " + A + "->" + C );
//            }
//        }else{ //没找到那就继续递归，分解子问题
//            //将 n - 1 个盘子从：A -> B,C 为过度杆
//            hanoit(A,C,B,n - 1); //第一步
//            cnt++;
//            if(cnt == m){
//                System.out.println("#" + n + ": " + A + "->" + C ); //第二步
//            }
//            hanoit(B,A,C,n - 1);
//        }
//    }
//
//    public static void main(String[] args) {
//        Scanner scan = new Scanner(System.in);
//        int n = scan.nextInt();   //盘子的数量
//        m = scan.nextInt();   //目标步骤
//        hanoit("A","B","C",n);  //调用函数
//        System.out.println(cnt);  //输出递归的总步数
//        scan.close();
//    }


    public static int ans;
    public static int m;
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        m = scan.nextInt();
        hanoit("A","B","C",n);
        System.out.println(ans);
        scan.close();
    }

    public static void hanoit(String A,String B,String C,int n){
        //先判断终止条件
        if(n == 1){
            ans += 1;
            if(ans == m){
                System.out.print("#" + n + ": " + A + "->" + C);
            }
        }else{
            hanoit(A,C,B,n - 1);
            ans += 1;
            if(ans == m){
                System.out.print("#" + n + ": " + A + "->" + C);
            }
            hanoit(B,A,C,n - 1);
        }
    }

}
